const data = require('./data.js')

/**
 * indexOf查找方式
 * @param {*} str
 */
// function matchIndexOf(str) {
//   console.log('输入', str);
//   console.time()
//   const match = data.filter((e) => e.indexOf(str) === 0)
//   console.timeEnd()
// }
// matchIndexOf('Zach')

// function createPatch(data) {
//   const obj = {}
  
//   const adds = (item) => {
//     let key = ''
//     for (let i = 0; i < item.length; i++) {
//       const e = item[i];
//       key += e
//       if (obj[key]) {
//         obj[key].push(item)
//       } else {
//         obj[key] = [item]
//       }
//     }
//   }

//   data.forEach(e => adds(e))
//   return obj
// }

// // 创建索引补丁
// var matchIndexData = createPatch(data)
// var search = 'Juabc'

// console.log('输入', search);
// console.time()
// const match = matchIndexData[search]
// console.timeEnd()

/**
 * 创建索引补丁
 * @param {Array} data
 * @returns
 */
function createPatch(data) {
  const map = new Map()
  
  const adds = (item) => {
    let key = ''
    for (let i = 0; i < item.length; i++) {
      const e = item[i];
      key += e
      if (map.has(key)) {
        map.get(key).push(item)
      } else {
        map.set(key, [item])
      }
    }
  }

  data.forEach(e => adds(e))
  return map
}

var map = createPatch(data)
var search = 'Juabc'

console.log('输入', search);
console.time()
map.get(search)
console.timeEnd()
